2.5. სპეციალური მართვის ელემენტები

სპეციალური მართვის ელემენტის ქვეშ იგულისხმება html კოდის ნებისმიერი ფრაგმენტი შენახული დამოუკიდებელი ფაილის სახით .ascx გაფართოებით. ფრაგმენტი შეიძლება შეიცავდეს კლიენტის სცენარს, ASP.NET-ის კოდს და სერვერის მართვის ელემენტებს. ფაქტობრივად ეს არის დამოუკიდებელი პროგრამა, რომელიც შეიძლება გამოყენებული იქნეს სხვადასხვა გვერდზე.
ASP.NET-ში გვერდს შეესაბამება დირექტივები: 
@ Page, @ Import, @ Implimentes, @ Register, @ Assembly,  @ OutputCache, @ Reference.
დირექტივა @ Page
ამ დირექტივით ხორციელდება გვერდისთვის სპეციალური ატრიბუტების მიცემა, რომლებიც გამოიყენება კოპილიატორისა და გვერდის ანალიზატორის მიერ გვერდის შესაქმნელად. ეს დირექტივა შეიძლება გვერდის ნებისმიერ ადგილზე იყოს, მაგრამ როგორც წესი იგი გვერდის დასაწყისშია მოთავსებული. ერთ ფაილიში მხოლოდ ერთი @Page დირექტივა შეიძლება იყოს მოთავსებული. გვერდის Page თვისებები შემდეგია/ცხრ. 2.3/

დირექტივა @ Import 
გამოიყენება სახელების სივრცის ცხადად იმპორტისათვის. ASP.NET 2.0-ში სახელების სივრცის იმპორტი ავტომატურად ხორციელდება.
დირექტივა @ Implimentes
დირექტივა საშუალებას იძლევა რეალიზებული იქნეს .NET ინტერფეისი. ინტერფეისის რეალიზაციისას სისტემას ვატყობინებთ, რომ ჩვენს მიერ დაპროექტებული გვერდი  კონკრეტული ინტერფეისის მეთოდებს, თვისებებს და მოველენებს გამოიყენებს. სერვერული მართვის ელემენტის ანალოგიურად სპეციალური მართვის ელემენტის მიერ მოვლენაზე რეაგირების მიზნით რეალიზებული უნდა იქნეს ინტერფეისი IPostBackEventHandler. ამ შემთხვევაში გამოიყენება დირექტივა:
<%@ Implimentes Interface=”System.Web.UI._ IPostBackEventHandler” %>
დირექტივა @ Register
გვერდზე სპეციალური მართვის ელემენტის გამოყენების ფაქტი შეტყობინებული უნდა იქნეს კომპილიატორისთვის. კოპილიატორისთვის აუცილებელი ინფორმაციის მიწოდება ხორციელდება დირექტივით @ Register. დირექტივის ორი ფორმაა. ფორმის ამორჩევა დამოკიდებულია მართვის ელემენტის მდებარეობაზე. 
<%@ Register tagprefix=”ტეგის პრეფიქსი” Tagname=”ტეგის სახელი” Src=”მისამართი” %>
<%@ Register tagprefix=”ტეგის პრეფიქსი” NameSpace=”სივრცის სახელი” Assembly=”კრებული” %>
პირველი ფორმით ხორციელდება გვერდზე კლიენტის მართვის ელემენტების მხარდაჭერის დამატება. ატრიბუტით TagPrefix განსაზღვრავს ინდივიდუალი მართვის ელემენტის  სახელების სივრცეს გვერდზე მისი გამოყენების დროს.   მაგ. თუ გვერდის თავში მოვათავსებთ დირექტივას:
<%@ Register tagprefix=”Ecom” Tagname=”Header” Src=”UserControls_Header.ascx” %>
მაშინ მომხმარებლის მართვის ელემენტის  Header ყველა ეგზემპლიარის წინ გვერდზე ჩვენ უნდა მიუთითოთ პრფიქსი Ecom ე.ი.
<Ecom: Header id “Header” runat=”server”/>
ატრიბუტში Tagname ჩაწერილი სახელით ხორციელდება  გვერდის შიგნით მართვის ელემენტის მითითება. Src-ში მიეთითება  ინდივიდუალური მართვის ელემენტის ფაილი, რომელშიც ჩაწერილია პროგრამის საწყისი ტექსტი.
@Register-ის მეორე ფორმით გვერდზე ხორციელდება ინდივიდუალური სერვერის მართვის ელემენტების დამატება. წარმოებს მათი კომპილაცია და დამატება კრებულში. TagPrefix-ის შინაარსობრივი დატვირთვა პირველი ფორმის იდენტურია. ატრიბუტი NameSpace გვიჩვენებს ინდივიდუალურ მართვის ელემენტების შემცველ სახელების სივრცეს. ატრიბუტი Assembly გვიჩვენებს სახელების სივრცის შემცველ კრებულს.
<%@ Register tagprefix=”Ecom” NameSpace =”Header” Assembly =“datset” %>
datset ინდივიდუალური მართვის ელემენტის სახელია. მისი გამოყენება შემდეგია:
<Ecom: datset  runat=”server”/>
სპეციალური მართვის ელემენტის შექმნა
სპეციალური მართვის ელემენტი Web გვერდის იდენტურია მხოლოდ იმ განსხვავებით, რომ იგი არ შეიცავს ტეგებს: <HTML>, <BODY>, <FORM>. იგი თავსდება ამ ტეგების შემცველ გვერდში. მომხმარებლის მართვის ელემენტი შეიძლება შეიცავდეს კლიენტის სცენარს, HTML  ელემენტებს, ASD.NET-ის კოდს, სერვერის სხვა მართვის ელემენტებს. იგი იქმნება დამოუკიდებელი .ascx გაფართოების ფაილის სახით და მრავალჯერ შეიძლება გამოყენებული იქნეს სხვადასხვა გვერდებზე. მაგალითად შევქმნათ გვერდის ფორმატიზაციის მართვის ელემენტი:
  • შევქმნათ ცარიელი გვერდი;
  • დავიტანოთ გვერდზე მართვის ელემენტი HtmlTable;
  • ცხრილისთვის დავაყენოთ შრიფტი, უჯრების ჩარჩო და სხვა;
ცხრილის დაპროექტებისას სისტემის მიერ ავტომატურად გენერირდება Html კოდი;
კოდში ამოვშალოთ სტრიქონები <HTML>, <BODY>,<FORM> და დავტოვოთ კოდი, რომელიც ეხება მხოლოდ ცხრილის ფორმირებას, კერძოდ:
<table style="width: 560px">
    <tr>
     <td align="center" style="border-top-style: outset; font-family: AcadNusx; 
        border-right-style: outset;
         border-left-style: outset; border-bottom-style: outset">
            Cveni pirveli individualuri&nbsp;</td></tr><tr>
        <td align="center" style="border-top-style: groove; font-family: AcadNusx; 
        border-right-style: groove;
        border-left-style: groove; border-bottom-style: groove">
            marTvis elementi</td></tr><tr><td></td></tr></table> 
დავიმახსოვროთ .ascx გაფართოებით. ამ მიზნით მივცეთ ბრძანება File/Save Default.aspx As. გამოვა დიალოგური ფანჯარა, სადაც ველში Save as type მოვნიშნოთ სტრიქონი Web User Control Files და დავაჭიროთ ღილაკს OK;
დამახსოვრებისას ფაილს დავარქვათ სახელი inmar;
ეს ფაილი დავიმახსოვროთ იმავე საქაღალდეში, რომელშიც Web საითს ვქმნით.
ამრიგად ჩვენ შევქმენით ინდივიდუალური (მომხმარებლის) მართვის ელემენტი .ascx გაფართოებით და სახელით inmar. ნებისმიერი გვერდიდან შეიძლება ამ ფაილის გამოყენება. ჩვენს მიერ შექმნილი ინდივიდუალური მართვის ელემენტის გამოსაყენებლად საჭიროა:
@Register დირექტივით გვერდს მივაწოდოთ ინფორმაცია გვერდზე მართვის ახალი ინდივიდუალური ელემენტის გამოჩენის შესახებ. ამ მიზნით გვერდის  Html კოდის პირველი სტრიქონის შემდეგ დავწეროთ:
   <%@ Register TagPrefix ="wrox" TagName
   ="footer" Src ="~/inmar.ascx"  %>;
მართვის ელემენტი დავამატოთ გვერდზე:
   <wrox:footer runat ="server" />
ჩვენს მიერ შექმნილ ინდივიდუალური მართვის ელემენტი დავამატოთ ფორმაში (შეიძლება მისი დამატება გვერდის ნებისმიერ ადგილზე). გვერდზე ჩაწერილი ეს სტრიქონები შემდეგნაირად გამოიყურება:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register TagPrefix ="wrox" TagName ="footer" Src ="~/inmar.ascx"  %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title></head>
<body>
    <form id="form1" runat="server">
      <wrox:footer runat ="server" /></form></body></html>
Internet Explorer-ში შემდეგნაირად გამოიყურება /სურ. 2.16/


ატრიბუტი                
მნიშვნელობა
დანიშნულება
AspCompat
True ან  False
საშუალებას იძლევა გაკეთდეს VB-ზე დაწერილ არსებულ  COM კომპონენტებთან მიმართვა
AutoEventWireup
True ან  False
გვიჩვენებს გვერდების ავტომატურად დაკავშირებას მოვლენებთან
Buffer
True ან  False
პასუხის ბუფერიზაციის ნებართვის მიცემა
ClassName
კლასის დასაშვები სახელი
გვერდის შემქმნებლი კლასის სახელი
ClientTarget
User Agent-ის დასაშვები სახელი
ბროუზერი, რომელზეც პროგრამა არის ორიენტირე-ბული
CodePage
კოდური გვერდის დასაშვები სახელი
პასუხის კოდური გვერდის დაყენება
CompileOptions
კომპილიატორის დასაშვები ოპციაგვერდის კომპილიაციის დროს
 კომპილიატორის გამოყენებული ოპციების სია
ContentType
დასაშვები MIME ტიპი
პასუხის შინაარსის ტიპის დაყენება
Culture
კულტურის დასაშვები იდენტიფიკატორი
აყენებს ენას, ჩანაწერების და კალენდარის სისტემას 
Debung
True ან  False        
გვერდის კომპილიაცია გამართვის რეჟიმში
Description        
არ გამოიყენება

EnableSessionState
True, ReadOnly ან  False        
ობიქტთან Session შეღწევა. ReadOnly-ს დროს შესაძლებელია წაკითხვა, მაგრამ არ შეიძლება სეანსის ცვლადების შეცვლა
EnableViewState
True ან  False        ViewState 
მხოლოდ  სერვე-რის მართვის ელემენტები-სთვისაა
EnableViewStateMac
True ან  False                        
ViewState-ს მიხედვით გვერდის მიერ მანქანის აუტენფიკაცია და კლიენტის მიერ ViewState-ს დამახინჯების შემოწმება
ErrorPage
დასაშვები URL
დაუმუშავებელი შეცდომის შემთხვევაში გვერდზე გადასვლის მისამართი
Explicit                
True ან  False
გამოიყენება Visual Basic-ის რეჟიმი Option Exsplicit
Inherits        
კლასის დასაშვები სახელი        
ფონური კოდის კლასი
Language                
.NET-ში დასაშვები ენის სახელი
ენა კომპილიატორისთვის
LCID                
დასაშვები ლოკალური იდენტიფიკა-ტორი
გვერდის ლოკალური იდენტიფიკატორი, თუ ის განსხვადება Web სერვერის ლოკალური იდენტიფიკა-ტორისგან
ResponseEncoding                
სომბოლოების კოდირების სისტემის დასაშვები სახელი
გაგზავნილი პასუხის ტექსტის კოდირების ფორმატი
SmartNavigation        
True ან  False        
ნავიგაციის ნებართვა
Src                
საწყისი ფაილის დასაშვები სახელი
ფონური კოდის კლასის სახელი
Strict                
True ან  False
გამოიყენება Visual Basic Option Strict რეჟიმი
Trace                
True ან  False
გვერდის ტრასირება ნებადა-რთულია
TraceMode                
SortByTime ან  SortByCategory
გვერდის შექმნისას გენე-რირებული ტრასირების შეტყობინებების დახარი-სხების წესი
Transaction                
NotSupported, Supported, Required, RequiresNew
გვერდის ტრანზაქციის პარა-მეტრების დაყენება
MarningLevel                
0, 1, 2, ან  4
კომპილიციის შეწყვეტის   შეტყობინების დონის მაჩვენებელი
სურ. 2.16. ჩვენს მიერ დაპროექტებული სპეციალური მართვის ელემენტით გამოტანილი ინფორმაცია